3
תגובות
יש לי מחלקה VALIDATION. במחלקה הזאת יש פונקציות שונות שקשורות לVALID(האם הקישור תקין, אם זה מינימום X תווים, מקסימום Y תווים וכו').כדי שיהיה אפשר להשתמש בפעולות גם מחוץ למחלקה השתמשתי במתודת קסם סטטית.
המחלקה VALIDATOR יורשת את VALIDATION . למחלקה VALIDATOR יש כמה מאפיינים:
sources- מערך של מקורות, כל תא מקבל שם וערך ( name => value)
rules- מערך של חוקים, כל תא מקבל שם(שנמצא בsources) ומערך חד מימדי של חוקים (name=>rules_name)
counts- מערך ממוספר, ממספר את התאים בשביל הגישה.
errors- מערך לשגיאות(לא רלוונטי כרגע)
error- משתנה בוליאני שקובע האם יש שגיאה או אין.

הכל עובד, בכל הוספה לסורסס, מתווספת שורה בקאונטס, ובכל פעם שרוצים להוסיף רול חדש - יש בדיקה האם הניים קיים בסורסס.
עד כאן הכל טוב.
עכשיו - אני רוצה פעולה שתרוץ על כל חוק במערך החד מימדי (rules_name) ותנתח כל מחרוזת שם.
אם כתוב min:5 היא תדע לבצע את הפעולה is_min(5) , אם כתוב required היא תבצע את הפעולה is_empty, וכו וכו'.

עכשיו - איך אני עושה את זה ?
עשיתי לולאת פור שתרוץ על counts.
היא תיקח את הname לפי המספר, ותשמור בצד את הערך את הvalue.
עכשיו היא תלך לrules, ותוציא את rules_name לפי הname.
ופה נתקעתי.
חשבתי על לעבור על rules_name עם לולאת פור, אבל זה לא יותר מידי לולאות ? אולי יש דרך יותר יעילה ?

נ.ב.
required זה בעצם בדיקה האם המחרוזת ריקה ? זתומרת, מילה נרדפת לnot empty ?

3 תשובות

avatar ענה Splash ב 29 לינואר 2015 #

אני לא מבין למה יש לך כל כך הרבה משתנים במחלקה הדבר היחיד שאתה צריך בולידציה זה מערך של שגיאות ועוד מערך של חוקים כאשר ה key של החוקים הוא השם של ה input וה value של המערך מכיל את החוקים שהוא צריך לקיים.

לגבי איך לממש את הבדיקה של החוקים כמו בכל דבר יש כמה דרכים,אתה יכול לבצע בעזרת switch,אתה יכול ליצור עוד מערך של חוקים שמפנה ל closure או לשם של הפונקציה שצריך להפעיל ואתה יכול פשוט לקרוא לפונקציית ולידציה בשם של ה rule ואז פשוט להריץ אותה רגיל עם ההערך של ה input.

וכן required מקביל ל"לא ריק וקיים",אם לדוגמא לשדה אימייל יש בחוקים email אבל אין required זאת אומרת שזה שדה אופציונאלי ולא חייב למלא אותו אך במידה ויש לו ערך מסויים ה rule של email צריך לבדוק שהוא תקין.

avatar ענה mee ב 30 לינואר 2015 #

ניסיתי לחקות את הוולידיציה של LARAVEL חחח
http://laravel.com/docs/4.2/validation
פה הוא נותן שם מסויים למשתנה, ואז קובע חוקים על פי השם

ועדיף SWITCH על תנאים , זתומרת IF?

avatar ענה Splash ב 30 לינואר 2015 #

במידה ויש הרבה תנאים switch יעשה את זה קצת יותר מסודר.